package ast;

import visitor.*;

public class TipoArray extends AbstractTipo {
	public TipoArray(int tamanio, Tipo tipo) {
		this.tamanio = tamanio;
		this.tipo = tipo;
	}

	public TipoArray(Object tamanio, Object tipo) {
		this.tamanio = Integer.parseInt((String) tamanio);
		this.tipo = (Tipo) tipo;
	}

	public Object accept(Visitor v, Object param) {
		return v.visit(this, param);
	}

	public boolean isPrimitivo() {
		return false;
	}

	@Override
	public String getNombreTipo() {
		return this.tipo.getNombreTipo();
	}

	@Override
	public int numeroBytes() {
		return tamanio * tipo.numeroBytes();
	}

	@Override
	public boolean equals(Object tipo) {
		if (tipo instanceof TipoArray) {
			if (((TipoArray) tipo).tamanio == this.tamanio
					&& ((TipoArray) tipo).tipo.equals(this.tipo))
				return true;
		}
		return false;
	}

	public int tamanio;
	public Tipo tipo;

}
